Field of the Invention
Embodiments of the invention generally relate to the playback of audio and video data streamed over a computer network to a client device. More specifically, embodiments of the present invention relate to multiplexing dynamic bit-rate video and audio video streams on a client device.
Description of the Related Art
Consumer demand for digital video products has greatly increased in recent years. Examples of popular applications include video conferencing, video security and surveillance and, importantly, the distribution of entertainment content, including a rapidly a growing market for Internet video streaming. Video encoding and compression is a common component of these applications. Coding-decoding (codec) algorithms allow digital video and audio data to be transmitted in real time. Several codecs currently in use have been developed as an industry standard such as MPEG-2, MPEG-4, H.264/AVC and AVS, while others are proprietary algorithms, such as On2, Real Video, and Windows Media Video (WMV) (now standardized by SMPTE as VC-1).
Internet video streaming of compressed audio and video is typically performed using a network of computing systems collectively referred to as a digital content distribution system. And such systems typically include a content server, a content player, and a communications network connecting the content server to the content player. The content server stores digital content files available for download from the content server to the content player. The digital content files correspond to movies, televisions shows, sporting events, music productions, etc. The digital content file typically provides sequential content data, organized according to playback chronology, including audio data and/or video data.
The content player (e.g., a Blu-ray® disk player) downloads and plays a digital content file, usually in response to a user request. The process of playing the digital content file includes decoding and rendering audio and video data to generate audio and video signals sent to speakers and a display screen. In practice, the content server transmits (i.e., streams) digital content to the content player, which plays the digital content file while content data is being received. To account for variable latency and bandwidth within the communications network, a content buffer queues incoming content data ahead of the content data actually being played. During periods of network congestion, which leads to lower available bandwidth, less content data is added to the content buffer, which may drain down as content data is being de-queued to support playback at a certain playback bit rate. However, during periods of high network bandwidth, the content buffer is replenished and additional buffer time is added until the content buffer is generally full again. In particular systems, the content buffer may queue content data corresponding to a time span ranging from seconds to more than a minute.